﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DevWalk : StateMachineBehaviour {

    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Devil devil = animator.gameObject.GetComponent<Devil>();
        if (devil != null)
        {
            devil.transform.localScale = new Vector3(devil.directionX, 1, 1);
        }
    }

    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        Devil devil = animator.gameObject.GetComponent<Devil>();
        if (devil != null)
        {
            float velX = -1 * devil.directionX * devil.speed;
            //devil.transform.Translate(velX * Time.deltaTime, 0, 0);

            if (devil.attackTarget != null)
            {
                float deltaX = devil.attackTarget.transform.position.x - devil.transform.position.x;
                float deltaY = devil.attackTarget.transform.position.y - devil.transform.position.y;
                if (Mathf.Abs(deltaX) < devil.attackRangeX && Mathf.Abs(deltaY) < devil.attackRangeY)
                {
                    animator.SetTrigger("Attack");
                }
            }
        }
    }

    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    //override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}

    // OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
    //override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}

    // OnStateIK is called right after Animator.OnAnimatorIK(). Code that sets up animation IK (inverse kinematics) should be implemented here.
    //override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}
}
